﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////

// Reviewed
#pragma once

#include "GcmpModelInterface.h"
#include "IObject.h"

namespace gcmp
{
    class IElementHiddenEdgeEventArgs;
    class IAllElementHiddenEdgeFinishEventArgs;
    /// \brief 构件消隐事件处理基类
    ///
    /// 需要监听构件产生消隐事件时，从这个类中继承并注册到IElementHiddenEdgeEvent里
    /// 消隐类型见 \see ElementHiddenEdgeEventType
    class GCMP_MODEL_INTERFACE_EXPORT IElementHiddenEdgeEventHandler : public IObject
    {
        DEFINE_CAST_DERIVED(gcmp::IElementHiddenEdgeEventHandler, gcmp::IObject);
    public:
        /// \brief 事件函数
        /// \param pArgs 事件参数
        /// \return void
        virtual void On(IElementHiddenEdgeEventArgs* pArgs) = 0;
    };


    /// \brief 所有构件消隐结束时事件参数
    ///
    /// 需要监听构件产生消隐事件时，从这个类中继承并注册到IAllElementHiddenEdgeFinishEventHandler里
    ///  \see IAllElementHiddenEdgeFinishEventArgs
    class GCMP_MODEL_INTERFACE_EXPORT IAllElementHiddenEdgeFinishEventHandler : public IObject
    {
        DEFINE_CAST_DERIVED(gcmp::IAllElementHiddenEdgeFinishEventHandler, gcmp::IObject);
    public:
        /// \brief 事件函数
        /// \param pArgs 事件参数
        /// \return void
        virtual void On(IAllElementHiddenEdgeFinishEventArgs* pArgs) = 0;
    };
}


